home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2005 October / PCWOCT05.iso / Software / FromTheMag / XAMPP 1.4.14 / xampp-win32-1.4.14-installer.exe / xampp / php / pear / spreadsheet / Writer.php < prev   
PHP Script  |  2003-10-01  |  3KB  |  105 lines

  1. <?php
  2. /*
  3. *  Module written/ported by Xavier Noguer <xnoguer@rezebra.com>
  4. *
  5. *  PERL Spreadsheet::WriteExcel module.
  6. *
  7. *  The author of the Spreadsheet::WriteExcel module is John McNamara 
  8. *  <jmcnamara@cpan.org>
  9. *
  10. *  I _DO_ maintain this code, and John McNamara has nothing to do with the
  11. *  porting of this code to PHP.  Any questions directly related to this
  12. *  class library should be directed to me.
  13. *
  14. *  License Information:
  15. *
  16. *    Spreadsheet_Excel_Writer:  A library for generating Excel Spreadsheets
  17. *    Copyright (c) 2002-2003 Xavier Noguer xnoguer@rezebra.com
  18. *
  19. *    This library is free software; you can redistribute it and/or
  20. *    modify it under the terms of the GNU Lesser General Public
  21. *    License as published by the Free Software Foundation; either
  22. *    version 2.1 of the License, or (at your option) any later version.
  23. *
  24. *    This library is distributed in the hope that it will be useful,
  25. *    but WITHOUT ANY WARRANTY; without even the implied warranty of
  26. *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  27. *    Lesser General Public License for more details.
  28. *
  29. *    You should have received a copy of the GNU Lesser General Public
  30. *    License along with this library; if not, write to the Free Software
  31. *    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  32. */
  33.  
  34. require_once('PEAR.php');
  35. require_once('Spreadsheet/Excel/Writer/Workbook.php');
  36.  
  37. /**
  38. * Class for writing Excel Spreadsheets. This class should change COMPLETELY.
  39. *
  40. * @author   Xavier Noguer <xnoguer@rezebra.com>
  41. * @category FileFormats
  42. * @package  Spreadsheet_Excel_Writer
  43. */
  44.  
  45. class Spreadsheet_Excel_Writer extends Spreadsheet_Excel_Writer_Workbook
  46. {
  47.     /**
  48.     * The constructor. It just creates a Workbook
  49.     *
  50.     * @param string $filename The optional filename for the Workbook.
  51.     * @return Spreadsheet_Excel_Writer_Workbook The Workbook created
  52.     */
  53.     function Spreadsheet_Excel_Writer($filename = '')
  54.     {
  55.         $this->_filename = $filename;
  56.         $this->Spreadsheet_Excel_Writer_Workbook($filename);
  57.     }
  58.  
  59.     /**
  60.     * Send HTTP headers for the Excel file.
  61.     *
  62.     * @param string $filename The filename to use for HTTP headers
  63.     * @access public
  64.     */
  65.     function send($filename)
  66.     {
  67.         header("Content-type: application/vnd.ms-excel");
  68.         header("Content-Disposition: attachment; filename=$filename");
  69.         header("Expires: 0");
  70.         header("Cache-Control: must-revalidate, post-check=0,pre-check=0");
  71.         header("Pragma: public");
  72.     }
  73.  
  74.     /**
  75.     * Utility function for writing formulas
  76.     * Converts a cell's coordinates to the A1 format.
  77.     *
  78.     * @access public
  79.     * @static
  80.     * @param integer $row Row for the cell to convert (0-indexed).
  81.     * @param integer $col Column for the cell to convert (0-indexed).
  82.     * @return string The cell identifier in A1 format
  83.     */
  84.     function rowcolToCell($row, $col)
  85.     {
  86.         if ($col > 255) { //maximum column value exceeded
  87.             return new PEAR_Error("Maximum column value exceeded: $col");
  88.         }
  89.         
  90.         $int = (int)($col / 26);
  91.         $frac = $col % 26;
  92.         $chr1 = '';
  93.         
  94.         if ($int > 0) {
  95.             $chr1 = chr(ord('A') + $int - 1);
  96.         }
  97.         
  98.         $chr2 = chr(ord('A') + $frac);
  99.         $row++;
  100.         
  101.         return $chr1.$chr2.$row;
  102.     }
  103. }
  104. ?>
  105.